📝 Резюме · 📄 Оригинал (669 B)
https://t.me/Python_libr/3376
Pydantic — умопомрачительная валидация данных на Python
Источник: https://t.me/Python_libr/3376
Что такое Pydantic?
Pydantic — мощная библиотека для валидации и сериализации данных в Python. Она построена на аннотациях типов (type hints) и автоматически проверяет данные при создании объектов моделей. Используется в FastAPI, LangChain, Anthropic Claude SDK и других проектах.
Базовый пример использования
from pydantic import BaseModel, EmailStr, Field
from typing import Optional
class User(BaseModel):
name: str
age: int = Field(..., ge=0, le=150) # от 0 до 150
email: EmailStr
phone: Optional[str] = None
# Создание с валидацией
user = User(
name="Пётр",
age=30,
email="peter@example.com"
)
print(user.model_dump())
# {'name': 'Пётр', 'age': 30, 'email': 'peter@example.com', 'phone': None}
# JSON представление
print(user.model_dump_json())
# {"name":"Пётр","age":30,"email":"peter@example.com","phone":null}
# Ошибка валидации
try:
bad = User(name="Пётр", age=200, email="bad")
except Exception as e:
print(e) # ValidationError: age must be <= 150
Вложенные модели
from pydantic import BaseModel
from typing import List
class Address(BaseModel):
city: str
street: str
zip_code: str
class Person(BaseModel):
name: str
address: Address
friends: List[str] = []
# Автоматическая валидация вложенных данных
person = Person(
name="Иван",
address={
"city": "Москва",
"street": "Красная площадь",
"zip_code": "109012"
},
friends=["Мария", "Алексей"]
)
Диаграмма процесса валидации
graph LR
A["Входные данные<br/>(dict, JSON)"] --> B{Pydantic<br/>BaseModel}
B -->|Валидно| C["Типизированный<br/>объект"]
B -->|Ошибка| D["ValidationError<br/>с деталями"]
C --> E["model_dump()<br/>JSON Schema"]
Ключевые возможности
- Автоматическое приведение типов: строка
"42"автоматически становится числом42 - Вложенные модели: модели могут содержать другие модели
- Кастомные валидаторы: использование декоратора
@field_validator - JSON Schema: автоматическая генерация OpenAPI схемы
- Сериализация: простой экспорт в JSON, dict, ORM объекты
- Конфигурация: класс
model_configдля управления поведением
Применение
Pydantic незаменим при разработке:
- REST API с FastAPI — валидация запросов и ответов
- ETL пайплайны — проверка качества входящих данных
- Конфигурационные файлы — валидация settings и env переменных
- Научные приложения — строгая типизация данных анализа